package view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

import model.Servicio;
import controller.Sistema;

/**
 * This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI
 * Builder, which is free for non-commercial use. If Jigloo is being used
 * commercially (ie, by a corporation, company or business for any purpose
 * whatever) then you should purchase a license for each developer using Jigloo.
 * Please visit www.cloudgarden.com for details. Use of Jigloo implies
 * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN
 * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR
 * ANY CORPORATE OR COMMERCIAL PURPOSE.
 */
public class AltaPlanPrepago extends javax.swing.JFrame {

	private static final long serialVersionUID = 1L;
	
	private AltaPlanPrepago instancia;
	private JComboBox ServiciosCmbox;
	private JTextField CostoAdicionaltxt;
	private JLabel CostoAdicional;
	private JButton Cancelar;
	private JButton Agregar;
	private JLabel Servicios;
	
	private JButton Aceptar;
	private JTextField cantidadtxt;
	private JLabel jLabel1;
	
	private boolean mPermiteExcedente;
	private String mNombrePlan;
	private Date mFechaVencimiento;
	
	private ArrayList<String> servicios = new ArrayList<String>();
	private ArrayList<Float> costo = new ArrayList<Float>();
	private ArrayList<Float> cantidad = new ArrayList<Float>();
	
	Vector<String> serviciosVector;
	Vector<Float> costoVector;
	Vector<Float> cantidadVector;

	public AltaPlanPrepago(String nombrePlan, boolean permiteExcedente, Date fechaVencimiento) {
		super();
		initGUI();
		instancia = this;
		this.mNombrePlan = nombrePlan;
		this.mPermiteExcedente = permiteExcedente;
		this.mFechaVencimiento = fechaVencimiento;
		
		this.setTitle("Alta Item Plan Prepago");
		{
			Servicios = new JLabel();
			getContentPane().add(Servicios);
			Servicios.setText("Servicio");
			Servicios.setBounds(45, 36, 116, 16);
		}
		{
			Vector<String> nombres = new Vector<String>();
			HashSet<Servicio> servicios = Sistema.getInstance().getServicios();
			Iterator itr = (Iterator) servicios.iterator();
			while (itr.hasNext()) {
				Servicio servicio = (Servicio) itr.next();
				nombres.add(servicio.getNombre());
			}

			nombres.add("service 1");
			nombres.add("service 2");
			nombres.add("service 3");

			ComboBoxModel ServiciosCmboxModel = new DefaultComboBoxModel(nombres);
			ServiciosCmbox = new JComboBox();
			getContentPane().add(ServiciosCmbox);
			ServiciosCmbox.setModel(ServiciosCmboxModel);
			ServiciosCmbox.setBounds(179, 33, 128, 23);

		}
		{
			Agregar = new JButton();
			getContentPane().add(Agregar);
			Agregar.setText("Agregar");
			Agregar.setBounds(51, 170, 88, 23);
			Agregar.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent e) {
					float fCosto = 0;
					float fCantidad = 0;
					
					if (validateFieldEmpty()) {
						if (!valiateIsFloat(cantidadtxt.getText().trim()) || !valiateIsFloat(CostoAdicionaltxt.getText().trim())) {
							HelperTest.showMessage("Can't validate float");
						}
						else {
							String servicio = (String) ServiciosCmbox.getSelectedItem();
							servicios.add(servicio);
							
														
							try {
								fCantidad = Float.parseFloat(cantidadtxt.getText());
								cantidad.add(fCantidad);
							} catch (Exception e1) {
								e1.printStackTrace();
							}
							
							try {
								fCosto = Float.parseFloat(CostoAdicionaltxt.getText());
								costo.add(fCosto);
							} catch (Exception e1) {
								e1.printStackTrace();
							}
							limpiarCampos();							
						}
					}
				}
			});
		}
		{
			Cancelar = new JButton();
			getContentPane().add(Cancelar);
			Cancelar.setText("Cancelar");
			Cancelar.setBounds(245, 170, 87, 23);
			Cancelar.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent e) {
					AltaPlanGeneralPrepago app = new AltaPlanGeneralPrepago();
					app.setLocationRelativeTo(null);
					app.setVisible(true);
					instancia.dispose();
					instancia.setVisible(false);
				}
			});
		}
		{
			CostoAdicional = new JLabel();
			getContentPane().add(CostoAdicional);
			CostoAdicional.setText("Costo Adicional");
			CostoAdicional.setBounds(45, 78, 100, 16);
		}
		{
			CostoAdicionaltxt = new JTextField();
			getContentPane().add(CostoAdicionaltxt);
			CostoAdicionaltxt.setBounds(179, 75, 128, 23);
		}
		{
			jLabel1 = new JLabel();
			getContentPane().add(jLabel1);
			jLabel1.setText("Cantidad");
			jLabel1.setBounds(45, 117, 116, 16);
		}
		{
			cantidadtxt = new JTextField();
			getContentPane().add(cantidadtxt);
			cantidadtxt.setBounds(179, 114, 128, 23);
		}
		{
			Aceptar = new JButton();
			getContentPane().add(Aceptar);
			Aceptar.setText("Aceptar");
			Aceptar.setBounds(150, 170, 79, 23);
			Aceptar.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					java.sql.Date sqlDateVencimiento = new java.sql.Date(mFechaVencimiento.getTime());
					serviciosVector = new Vector(servicios);
					costoVector = new Vector(costo);
					cantidadVector = new Vector(cantidad);					
					Sistema.getInstance().altaPlanPrepago(mNombrePlan, serviciosVector, cantidadVector, costoVector, mPermiteExcedente, sqlDateVencimiento);					
				}
			});
		}
	}

	private boolean valiateIsFloat(String number) {
		if (number.length() > 0) {
			try {
				float f = Float.parseFloat(number);
				System.out.println("Metho validateIsFloat value: " + String.valueOf(f));
				return true;
			} catch (Exception e) {
				return false;
			}
		}
		return false;
	}
	
	private boolean validateFieldEmpty() {
		if (cantidadtxt != null && cantidadtxt.getText().trim().length() > 0 && CostoAdicionaltxt != null && CostoAdicionaltxt.getText().trim().length() > 0) {
			return true;
		}
		HelperTest.showMessage("Complete All Fields");
		return false;
		
	}
		
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			pack();
			this.setSize(382, 266);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void limpiarCampos() {
		cantidadtxt.setText(null);
		CostoAdicionaltxt.setText(null);		
	}
}